package com.my.study.permission.tree;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.List;

/**
 * 数-基类
 *
 * @author: Carlos
 * @create: 2021/01/11 19:36
 */
@Getter
@Setter
@ToString
public class TreeRsVo<T extends TreeRsVo> {

    /**
     * id
     */
    private Long id;

    /**
     * 父节点id
     */
    private Long parentId;

    /**
     * 名称
     */
    private String name;

    /**
     * 是否可用
     */
    private Boolean available;

    /**
     * 位置（用于排序)
     */
    private Integer position;

    /**
     * 子列表
     */
    private List<T> children;

    /**
     * 子节点排序
     */
    public void sortChildren() {
        this.children.sort((m1, m2) -> {
            int orderBy1 = m1.getPosition();
            int orderBy2 = m2.getPosition();
            return Integer.compare(orderBy1, orderBy2);
        });
        // 对每个节点的下一层节点进行排序
        for (T child : children) {
            if (child != null && child.getChildren() != null) {
                child.sortChildren();
            }
        }
    }
}
